from tkinter import *
from tkinter import messagebox

# 创建主窗口
root = Tk()
root.title("菜单示例")
root.geometry('800x600')

# 创建主菜单栏
menubar = Menu(root)
# 将主菜单栏添加到主窗口
root.config(menu=menubar)

# 创建文件菜单
file_menu = Menu(menubar, tearoff=0)  # tearoff=0 禁用菜单分离功能
# 将文件菜单添加到主菜单栏
menubar.add_cascade(label="文件", menu=file_menu)

# 创建"最近打开"子菜单
recent_menu = Menu(file_menu, tearoff=0)
# add_cascade 是添加一个子菜单
file_menu.add_cascade(label="最近打开", menu=recent_menu)

# 添加一些最近打开的文件项
def open_recent_file(filename):
    messagebox.showinfo("提示", f"打开最近文件：{filename}")

# add_command 是直接添加一个可执行的命令，绑定一个函数
# 这里用lambda可以理解为，又创建了一个函数，这个匿名函数会调用open_recent_file函数，并传递"文档1.txt"作为参数
recent_menu.add_command(label="文档1.txt", command=lambda: open_recent_file("文档1.txt"))
recent_menu.add_command(label="文档2.txt", command=lambda: open_recent_file("文档2.txt"))
recent_menu.add_command(label="文档3.txt", command=lambda: open_recent_file("文档3.txt"))

# 添加文件菜单项
def new_file():
    messagebox.showinfo("提示", "新建文件")

def open_file():
    messagebox.showinfo("提示", "打开文件")

def save_file():
    messagebox.showinfo("提示", "保存文件")

# 在文件菜单项下面添加各种菜单项
file_menu.add_command(label="新建", command=new_file)
file_menu.add_command(label="打开", command=open_file)
file_menu.add_command(label="保存", command=save_file)
file_menu.add_separator()  # 添加分隔线
file_menu.add_command(label="退出", command=root.quit)

# 创建帮助菜单
help_menu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="帮助", menu=help_menu)

def show_about():
    messagebox.showinfo("关于", "这是一个菜单示例程序")

help_menu.add_command(label="关于", command=show_about)

# 添加一个标签显示内容
label = Label(root, text="这是主窗口内容区域")
label.pack(pady=20)

# 运行主循环
root.mainloop()
